package com.kili.cloud.shorturl.repository;

import com.kili.cloud.shorturl.controller.config.vo.UrlVo;
import com.kili.cloud.shorturl.repository.entity.UrlMapInfo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @description url映射表对应的dao
 * @author tom.liu
 * @date 2019/6/14 16:31
 */
@Repository
public interface UrlMapInfoDao {

    /**
     * 功能描述: 插入url映射信息
     * @param urlMapInfo
     * @return int
     * @author tom.liu
     * @date 2019/6/16 19:32
     */
    int insertSelective(UrlMapInfo urlMapInfo);

    /**
     * 功能描述: 更新url
     * @param urlMapInfo
     * @return int
     * @author tom.liu
     * @date 2019/6/16 19:33
     */
    int updateByPrimaryKeySelective(UrlMapInfo urlMapInfo);

    /**
     * 功能描述: 根据UrlMapInfo属性值，查找满足条件的UrlMapInfo数据
     * @param urlMapInfo
     * @return List<Customer>
     * @author tom.liu
     * @date 2019/6/16 17:35
     */
    List<UrlMapInfo> selectBySelective(UrlMapInfo urlMapInfo);

    /**
     * 功能描述: 根据资源定位符查找有效的原链接地址
     * @param shortUrlUri
     * @return UrlMapInfo
     * @author tom.liu
     * @date 2019/6/17 17:27
     */
    UrlMapInfo selectOriginalUrlByUri(@Param("shortUrlUri") String shortUrlUri);

    /**
     * 功能描述: 根据id将访问次数加一（原子更新）
     * @param id
     * @return int
     * @author tom.liu
     * @date 2019/6/17 22:42
     */
    int updateVisitCount(Long id);

    /**
     * 功能描述: 短链后台查询所有Url
     * Abner.Hu
     * 2019/08/13
     */
    List<UrlMapInfo> selectAllUrl(UrlVo urlVo);

}